package com.slj.uitil;

import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.UUID;

@Component
public class FileUtil {
    //上传目录 我们本地开发为保证目录的准确定性使用绝对路径
    private final static   String URL = "D:\\cods\\ssm\\booksys_ssm\\src\\main\\webapp\\uploads";


    //上传文件
    public static String uploadFile(MultipartFile multipartFile) throws IOException {

        //先判断是否为空
        if (multipartFile.isEmpty()||multipartFile.getSize()==0){
            return  null;
        }
        //判断文件名是否为空
        String fileName = multipartFile.getOriginalFilename();
        if (fileName==null||fileName==""||fileName.isEmpty()){
            throw  new IOException("文件名不能为空");
        }


        //模糊文件名字用UUID


        String originalFileName = multipartFile.getOriginalFilename();
        String fileExtension = "";
        if (originalFileName != null && originalFileName.contains(".")) {
            fileExtension = originalFileName.substring(originalFileName.lastIndexOf("."));
        }
        String safeFileName = UUID.randomUUID() + fileExtension;
        
        //判断本地路径是否存在不存在则创建
        Path path = Paths.get(URL);//将字符串转换为path对象
        if (!Files.exists(path)){//exists用于检查目录是否存在存在就是true不存在就是false
            Files.createDirectories(path);//如果不存在就创建
        }
        //拼接上传路径
        Path upFileURL=path.resolve(safeFileName);
        //File.copy这个只要后缀名对就行了,将文件流复制过去,如果存在就覆盖掉
        Files.copy(multipartFile.getInputStream(), upFileURL, StandardCopyOption.REPLACE_EXISTING);
        ///        获取文件上传流                     目标路径 如果存在就覆盖他
        return safeFileName;
    }
}